home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
guilib3
/
inc
/
cnslib.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-11-30
|
6KB
|
177 lines
/* :*****************************************************************
: "cnslib.h" : system“Pride”コンソール・ライブラリ
:*****************************************************************
*/
#ifndef _CNS_H
#define _CNS_H
#ifndef _GUIDEFS_H
# include "guidefs.h"
#endif
typedef struct _cnslin_t
{ struct _cnslin_t *next;
struct _cnslin_t *prev;
size_t len;
size_t ln; /* 表示行数 */
char p[1];
} CNSLIN_T;
typedef struct /* テキスト位置構造体 */
{ size_t lnL; /* 行番号(論理) */
size_t lnD; /* 行番号 (表示) */
size_t lnDn; /* 先頭(表示)行番号 */
size_t ofs; /* 行頭からのオフセット */
} CNSPOS_T;
#define CNS_COLTBL_NUM (32)
typedef struct _cns_t
{
int page; /* 書き込みページ */
FRAME fr; /* 表示座標 */
FRAME tFr; /* 文字表示範囲 */
COLOR colTbl[CNS_COLTBL_NUM];
/* カラーテーブル */
void *ptr; /* 汎用ポインタ */
void (*sttDsp_func)(struct _cns_t *); /* 状態表示用関数 */
int (*extCmd_func)(struct _cns_t *,int); /* 拡張コマンド関数 */
void (*scnFlushFunc)(struct _cns_t *,int,int); /* not use */
void (*dspLineFunc)(struct _cns_t *,int,int); /* not use */
void (*putSpcFunc)(struct _cns_t *,int,int,int);
void (*putAnkFunc)(struct _cns_t *,int,int,int);
void (*putKanFunc)(struct _cns_t *,int,int,int);
void (*putCtrFunc)(struct _cns_t *,int,int,int);
void (*putMakFunc)(struct _cns_t *,int,int,int);
UCHAR fntX,fntY; /* フォントサイズ */
UCHAR spcX,spcY; /* 字間 */
SHORT xsL; /* 横文字数(右マージン) */
SHORT xsD; /* 表示文字数 */
SHORT xofs; /* 横表示開始位置 */
SHORT tab; /* タブサイズ */
SHORT dspXc, dspYc; /* 表示可能文字数 */
SHORT dspXm, dspYm;
CNSLIN_T *topLin; /* バッファ先頭 */
CNSLIN_T *lastLin; /* 最終ライン */
CNSLIN_T *dspLin; /* 表示先頭 */
CNSPOS_T dspPos; /* 表示先頭位置 */
size_t txtSize; /* テキストサイズ */
size_t linMaxD; /* 表示行数 */
size_t linMaxL; /* 論理行数 */
CNSLIN_T *curLin; /* カーソル行 */
CNSPOS_T curPos; /* カーソル位置 */
SHORT curXm; /* カーソルホールド位置 */
SHORT curX, curY; /* カーソル位置 */
char curDsp; /* カーソル表示状態 */
char curDmy; /* TDP で使用(underline) */
char _curDmy[2];
char selFlag; /* 選択中 */
char selMode; /* 選択モード */
SHORT selX; /* 矩形選択開始X */
CNSLIN_T *selLin; /* 選択開始 行ポインタ */
CNSPOS_T selPos; /* 選択先頭位置 */
CNSPOS_T lastTouch; /* 最終変更位置 */
UINT findAtt; /* 検索属性 */
CNSLIN_T *findLin; /* 検索行ポインタ */
CNSPOS_T findPos; /* 検索先頭 */
size_t findLen; /* 検索文字数 */
char *searchStr; /* 検索文字列 */
size_t searchLen;
size_t homeY; /* ホーム位置 */
int logFlag;
int kanCode; /* 第1バイト漢字コード */
int escRevers; /* リバース */
int escLevel; /* エスケープシーケンス */
int escCode; /* エスケープコード */
size_t maxLinBuf; /* コンソールモード最大行数 */
size_t linBufSize; /* 行バッファの文字数 */
int cnsX, cnsY; /* コンソール入力位置 */
int cnsDspIgnore; /* 表示禁止 */
int cnsSelStr; /* 表示用のワーク */
} CNS_T;
#define CNS_PUTSPC(_cns,_x,_y,_ch) { \
if ( !((_cns)->cnsDspIgnore) && ((_cns)->cnsY >= (_cns)->dspPos.lnD) && ((_y) < (_cns)->dspPos.lnD + (_cns)->dspYm) ) \
((_cns)->putSpcFunc)((_cns),(_x),(_y),(_ch)&0xFF); \
}
#define CNS_PUTANK(_cns,_x,_y,_ch) { \
if ( !((_cns)->cnsDspIgnore) && ((_cns)->cnsY >= (_cns)->dspPos.lnD) && ((_y) < (_cns)->dspPos.lnD + (_cns)->dspYm) ) \
((_cns)->putAnkFunc)((_cns),(_x),(_y),(_ch)&0xFF); \
}
#define CNS_PUTKAN(_cns,_x,_y,_ch) { \
if ( !((_cns)->cnsDspIgnore) && ((_cns)->cnsY >= (_cns)->dspPos.lnD) && ((_y) < (_cns)->dspPos.lnD + (_cns)->dspYm) ) \
((_cns)->putKanFunc)((_cns),(_x),(_y),(_ch)&0xFFFF); \
}
#define CNS_PUTCTR(_cns,_x,_y,_ch) { \
if ( !((_cns)->cnsDspIgnore) && ((_cns)->cnsY >= (_cns)->dspPos.lnD) && ((_y) < (_cns)->dspPos.lnD + (_cns)->dspYm) ) \
((_cns)->putCtrFunc)((_cns),(_x),(_y),(_ch)&0xFF); \
}
#define CNS_PUTMAK(_cns,_x,_y,_ch) { \
if ( !((_cns)->cnsDspIgnore) && ((_cns)->cnsY >= (_cns)->dspPos.lnD) && ((_y) < (_cns)->dspPos.lnD + (_cns)->dspYm) ) \
((_cns)->putMakFunc)((_cns),(_x),(_y),(_ch)&0xFF); \
}
/* "cns010.c" ------------------------------------------------*/
extern int CNS_set_dspFunc( CNS_T *cns );
extern CNS_T *CNS_open(void);
extern void CNS_close( CNS_T *cns );
/* "cns011.c" ------------------------------------------------*/
extern int CNS_getMarginAdjust( CNS_T *cns );
extern void CNS_setScnWork( CNS_T *cns );
extern int CNS_setScnSize( CNS_T *cns, int x1, int y1, int x2, int y2 );
/* "cns012.c" ------------------------------------------------*/
extern int CNS_changeScnSize( CNS_T *cns, int x1, int y1, int x2, int y2 );
/* "cns013.c" ------------------------------------------------*/
extern int CNS_clearBuffer( CNS_T *cns );
/* "cns014.c" ------------------------------------------------*/
extern int CNS_getStrXY( CNS_T *cns, char *buf, int len, int x, int y );
extern CNSLIN_T *CNS_getLinPtr( CNS_T *cns, int lnD );
/* "cnssetc.c" ------------------------------------------------*/
int CNS_setc( CNS_T *cns, int x, int y, int ch );
/* "cnsputc.c" ------------------------------------------------*/
extern void CNS_chkScroll( CNS_T *cns );
extern void CNS_putAnk( CNS_T *cns, int x, int y, int ch );
extern void CNS_putKan(CNS_T *cns, int x, int y, int sjis);
extern int CNS_putc( CNS_T *cns, int ch );
/* "cnsputs.c" ------------------------------------------------*/
extern int CNS_puts( CNS_T *cns, CONST char *s);
/* "cnsflush.c" ------------------------------------------------*/
extern int CNS_flush( CNS_T *cns, int dspLn, int dspN );
/* "cnsjump.c" ------------------------------------------------*/
extern int CNS_jump( CNS_T *cns, size_t lnD );
/* "cnsnext.c" ------------------------------------------------*/
extern int CNS_nextLine( CNS_T *cns, int n );
/* "cnsprev.c" ------------------------------------------------*/
extern int CNS_prevLine( CNS_T *cns, int n );
/* "cnscur.c" ------------------------------------------------*/
extern void CNS_putCursor( CNS_T *cns, int on_off );
#endif